**Dynamic DNS** or **DDNS** is a method of updating, in real time, a [DNS](/index.php/DNS "DNS") to point to a changing IP address on the Internet. This is used to provide a persistent domain name for a resource lacking a static IP. To use DDNS, you need to both sign up with a DDNS provider and set up an automatic update tool that will notify the provider when your IP address changes.

## Contents

*   [1 Update tools](#Update_tools)
    *   [1.1 Router](#Router)
    *   [1.2 ddclient](#ddclient)
        *   [1.2.1 Use an external website to determine IP address](#Use_an_external_website_to_determine_IP_address)
        *   [1.2.2 Starting ddclient after networking is up](#Starting_ddclient_after_networking_is_up)
    *   [1.3 Other tools](#Other_tools)
*   [2 Other providers](#Other_providers)
    *   [2.1 duiadns](#duiadns)
    *   [2.2 FreeDns.io](#FreeDns.io)
    *   [2.3 Now-DNS](#Now-DNS)
    *   [2.4 System-NS](#System-NS)
    *   [2.5 Loopia.se](#Loopia.se)

## Update tools

### Router

If the device needing DDNS sits behind a router, you should first check if the router itself can update any DDNS services. Although the selection of services may be limited, there are several advantages to using the router: it will probably be easier to set up, will require little to no maintenance, and will have no downtime (if the router is down you won't have Internet anyway).

### ddclient

[ddclient](https://www.archlinux.org/packages/?name=ddclient) is compatible with many DDNS services and is the recommended tool for updating DDNS if your [router](#Router) is not an option. It includes [systemd](/index.php/Systemd "Systemd") support.

After installing, edit the default config `/etc/ddclient/ddclient.conf` to set up your DDNS provider (it includes many examples). Then [enable](/index.php/Enable "Enable") and [start](/index.php/Start "Start") `ddclient.service`.

Some of the compatible services are listed below, but you can also check the [examples](http://sourceforge.net/p/ddclient/code/HEAD/tree/trunk/sample-etc_ddclient.conf) and [protocols](http://sourceforge.net/p/ddclient/wiki/protocols/) for more.

<caption>ddclient compatible services</caption>
| Service | Cost | Available Records | Hostname Limit | Config Notes | Alternative tools |
| [Now-DNS](http://now-dns.com/) | Free | A, AAAA | unlimited | [example](https://now-dns.com/client/ddclient.conf) |
| [ChangeIP](http://www.changeip.com/) | Free or paid | A, AAAA, CNAME, MX, codomains | 7 free | [example](https://sourceforge.net/p/ddclient/wiki/protocols/#changeip) |
| [DNSdynamic](http://www.dnsdynamic.org/) | Free | [example](https://www.dnsdynamic.org/api.php) |
| [Duck DNS](https://www.duckdns.org/) | Free | [example](https://sourceforge.net/p/ddclient/wiki/protocols/#duckdns) | [duckdns](https://aur.archlinux.org/packages/duckdns/) |
| [FreeDNS](http://freedns.afraid.org/) | Free or paid | CNAME, A, AAAA, MX, NS, TXT, LOC, RP, HINFO, SRV | 5 free | [example](http://freedns.afraid.org/scripts/freedns.clients.php) | [afraid-dyndns-uv](https://aur.archlinux.org/packages/afraid-dyndns-uv/), [petrified](https://aur.archlinux.org/packages/petrified/) |
| [No-IP](http://www.noip.com/) | Free or paid | 3 free, 25+ paid | Use protocol `noip`, server `dynupdate.no-ip.com` | [noip](https://aur.archlinux.org/packages/noip/) |
| [nsupdate.info](https://www.nsupdate.info/) | Free and open source | A, AAAA | Use protocol `dyndns2` | [inadyn-fork](https://aur.archlinux.org/packages/inadyn-fork/) |
| [Dyn DNS](https://dyn.com/dns/) | Free or paid | A, CNAME, MX | [example](https://sourceforge.net/p/ddclient/wiki/protocols/#dyndns2) | [ndyndns](https://aur.archlinux.org/packages/ndyndns/) |
| [Namecheap](https://www.namecheap.com/) | Paid | A, CNAME | [example](https://sourceforge.net/p/ddclient/wiki/protocols/#namecheap) | [ndyndns](https://aur.archlinux.org/packages/ndyndns/) |
| [Dynu](https://www.dynu.com/) | Free or paid | 4 free, 500 paid | [example](https://www.dynu.com/DynamicDNS/IPUpdateClient/DDClient) |

**Note:** Free users of no-ip are required to manually confirm their domain(s) every 30 days. Domain confirmation is not required for Enhanced users though. More info at [Why is My Hostname Pending Deletion?](http://www.noip.com/support/knowledgebase/why-is-my-hostname-pending-deletion/)

#### Use an external website to determine IP address

If ddclient is unable to detect your IP address, you can configure ddclient to fetch your IP from an external webpage such as [whatismyip.org](http://whatismyip.org/). Add somewhere in the config file:

 `/etc/ddclient/ddclient.conf` 
```
# use whatismyip.org to determine IP address
use=web
web=whatismyip.org
```

#### Starting ddclient after networking is up

If you find that ddclient is unable to update your IP properly, it may be that the ddclient process is starting before networking is up. To fix it, you can edit the unit file to depend on `network-online.target`:

 `# systemctl edit ddclient.service` 
```
[Unit]
After=network-online.target
Wants=network-online.target
```

Additional configuration for `network-online.target` may be necessary, see [[1]](https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget#cutthecraphowdoimakenetwork.targetworkforme).

### Other tools

Other DDNS updaters that work with several providers are [inadyn-mt](https://aur.archlinux.org/packages/inadyn-mt/) ([supported providers](http://sourceforge.net/projects/inadyn-mt)) and [ndyndns](https://aur.archlinux.org/packages/ndyndns/) (supports DynDNS and Namecheap).

## Other providers

The following DDNS providers are not compatible with [ddclient](#ddclient) so updating your IP with them may require a special tool or some custom scripting. Remember that if the service allows you to update your IP using the command line, you can automate the process using tools such as [cron](/index.php/Cron "Cron") or [systemd/Timers](/index.php/Systemd/Timers "Systemd/Timers").

### duiadns

[Duiadns.org](https://www.duiadns.net) is a free service.

### FreeDns.io

[FreeDns.io](https://freedns.io) provides free A and AAAA DNS records and CNAME, TXT and MX records with a premium membership. You can update your IP using their HTTP API (with a 60 requests-per-hour limit). They provide [several example scripts](https://github.com/nkovacne/freedns-samples).

### Now-DNS

[Now-DNS.com](https://now-dns.com) is a free service which is easy and uncomplicated to set up.

### System-NS

[System-NS](http://system-ns.com/) is a free service which can be updated via the command line. See [the official documentation](https://system-ns.com/services/dynamic).

### Loopia.se

If you use loopia.se as name server, you can query updates of DNS records via *curl* as described in the [official documentation](https://support.loopia.se/wiki/curl/).

If you use 2FA for login, or by some other reason would rather use the LoopiaAPI via a python script to change the DNS dynamically, you should follow the instructions [on this page](https://support.loopia.se/wiki/uppdatera-dynamisk-ip-adress-med-loopiaapi/). The python file is well written and easy to understand, and basically all you need to do is to generate an API key on your login at Loopia kundzon first.